package com.happy.model.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.happy.model.entity.CardReservation;
import com.happy.model.entity.CardTime;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.time.LocalDateTime;

@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class CardAddDTO {

    private Integer id;

    /**
     * 卡名称
     */
    @NotBlank(message = "卡名称不能为空")
    private String title;

    /**
     * 卡类型
     */
    private Integer couponType;

    /**
     * 图片
     */
    private String img;

    /**
     * 引流价（元）
     */
    @NotNull(message = "引流价不能为空")
    private Integer draPrice;

    /**
     * 市场价（元）
     */
    @NotNull(message = "市场价不能为空")
    private Integer marPrice;

    /**
     * 每日限发
     */
    @NotNull(message = "每日限发不能为空")
    private Integer limited;

    /**
     *  是否新客0元
     */
    private Integer newCustomer;

    /**
     * 是否预约（1、否2、是）
     */
    private Integer reservation;

    /**
     * 如已预约，还需添加预约表
     */
    private CardReservation cardReservations;

    /**
     * 是否平台可见
     */
    private Integer visibleState;

    /**
     * 有效类型1、永久2、部分天数
     */
    private Integer validityType;

    /**
     * 有效开始期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime validityBeginTime;

    /**
     * 有效结束期（如果是永久则有效到2099年）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime validityEndTime;

    /**
     * 使用时间段类型（1、全部时间段2、部分时间段）
     */
    private Integer useTimeType;

    /**
     * 如果是部分时间段，还需添加时间段表
     */
    private CardTime useTimes;

    /**
     * 发布数量
     */
    @NotNull(message = "发布数量不能为空")
    private Integer releasesNum;

    /**
     * 使用规则
     */
    private String useRule;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime cardCreateTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime cardUpdateTime;
}
